package logic;

import static view.Door.dir;
import java.io.File;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JTextArea;

/**
 * 文件选择器.
 * @author Rex
 *
 */
public class FileChooser {

	/**
	 * 文件选择器.
	 * @param msg
	 */
	public static void action(JTextArea msg) {
		// 新建JFileChooser，初始化时同时设置默认路径
		JFileChooser chooser = new JFileChooser("D:\\");

		// 仅显示文件夹
		chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
		// 禁止多选
		chooser.setMultiSelectionEnabled(false);
		// 定义弹出的文件选择器框
		chooser.showDialog(new JLabel(), "选择");

		// 获取用户选择的路径
		File temp = chooser.getSelectedFile();
		
		// 判断路径是否存在、是否可用
		String str = "您尚未选择文件夹";
		int[] sums = null;
		if (temp != null) {
			str = "无法读取该目录内文件";
			sums = count(temp);
			if (sums != null) {
				dir = temp;
				str = dir.getAbsolutePath();
			}
		}
		
		// 提示用户
		msg.setText(str);
		if (sums != null) {
			msg.append("此路径下有" + sums[0] + "个文件," + sums[1] + "个子文件夹");
		}
	}
	
	/**
	 * 	统计文件夹内的文件数目.
	 * 不包括子文件夹内的文件。
	 * @param folder
	 */
	private static int[] count(File folder) {
		int[] temp = null;
		
		if (folder != null && folder.isDirectory()) {
			int fileSum = 0;// 文件数
			int folderSum = 0;// 子文件夹数
			File[] files = folder.listFiles();
			if (files != null) {
				for (File file : files) {
					if (file.isFile()) {
						fileSum++;
					} else {
						folderSum++;
					}
				}
				temp = new int[] { fileSum, folderSum };
			}
		}
		
		return temp;
	}
	
}